﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Configuration;
using System.IO;
using System.Threading;

using ASPEMAILLib;

namespace WLMCoreLibrary
{
    //public class MailThreadContainer
    //{
    //    private ASPEMAILLib.IMailSender mensajeEmail;

    //    public MailThreadContainer()
    //    {

    //    }

    //    public MailThreadContainer(ASPEMAILLib.IMailSender mens)
    //    {
    //        mensajeEmail = mens;
    //    }

    //    public void enviarMails()
    //    {
    //        mensajeEmail.Send();
    //    }
    //}

    public class MailBox
    {
        private string _nombre;
        private string _mail;

        public string Nombre { get { return _nombre; } set { _nombre = value; } }
        public string Email { get { return _mail; } set { _mail = value; } }

        public MailBox(string nombre, string email)
        {
            _nombre = nombre;
            _mail = email;
        }
    }




    public class Mailer
    {
        public static bool Send(List<MailBox> listaMails, string subject, string body, string[] attachs)
        {
            try
            {
                ASPEMAILLib.IMailSender mensajeEmail;
                mensajeEmail = new ASPEMAILLib.MailSender();
                mensajeEmail.Host = ConfigurationManager.AppSettings["SMTPServer"];
                mensajeEmail.Port = Convert.ToInt32(ConfigurationManager.AppSettings["SMTPPort"]);
                mensajeEmail.Username = ConfigurationManager.AppSettings["SMTPUser"];
                mensajeEmail.Password = ConfigurationManager.AppSettings["SMTPPassword"];
                mensajeEmail.IsHTML = 1;
                mensajeEmail.From = ConfigurationManager.AppSettings["FromEmail"];
                mensajeEmail.FromName = ConfigurationManager.AppSettings["FromName"];
                mensajeEmail.AddBcc(ConfigurationManager.AppSettings["CopiaEmail"], ConfigurationManager.AppSettings["CopiaName"]);


                foreach (MailBox mail in listaMails)
                    mensajeEmail.AddAddress(mail.Email, mail.Nombre);
                mensajeEmail.Subject = subject;
                if (attachs != null)
                {
                    foreach (string attach in attachs)
                    {
                        if (File.Exists(attach))
                            mensajeEmail.AddAttachment(attach);
                    }
                }
                mensajeEmail.Body = body;

                
                mensajeEmail.Send();
                return true;
            }
            catch (Exception e)
            {
                HttpContext.Current.Response.Write(e.Message+e.StackTrace);
                return false;
            }
        }
    }
}
